#!/bin/bash

# GitBuild 系统一键启动脚本
# 用于同时启动后端服务和前端开发服务器

echo "========================================"
echo "  GitBuild 系统一键启动"
echo "========================================"

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 检查 Node.js 是否安装
if ! command -v node &> /dev/null; then
    echo -e "${RED}错误: 未检测到 Node.js，请先安装 Node.js${NC}"
    exit 1
fi

echo -e "${GREEN}✓ Node.js 版本: $(node -v)${NC}"

# 检查是否需要安装依赖
if [ ! -d "node_modules" ]; then
    echo -e "${YELLOW}正在安装后端依赖...${NC}"
    npm install
fi

if [ ! -d "frontend/node_modules" ]; then
    echo -e "${YELLOW}正在安装前端依赖...${NC}"
    cd frontend && npm install && cd ..
fi

# 检查 Redis 是否运行（可选）
if command -v redis-cli &> /dev/null; then
    if redis-cli ping &> /dev/null; then
        echo -e "${GREEN}✓ Redis 服务已运行${NC}"
    else
        echo -e "${YELLOW}⚠ Redis 未运行，某些功能可能不可用${NC}"
    fi
else
    echo -e "${YELLOW}⚠ 未检测到 Redis，某些功能可能不可用${NC}"
fi

# 创建日志目录
mkdir -p logs

# 创建临时目录
mkdir -p temp
mkdir -p downloads
mkdir -p data

echo ""
echo -e "${GREEN}========================================"
echo "  正在启动服务..."
echo -e "========================================${NC}"
echo ""

# 启动后端服务（后台运行）
echo -e "${YELLOW}[1/2] 启动后端服务...${NC}"
node src/server.js > logs/backend.log 2>&1 &
BACKEND_PID=$!
echo -e "${GREEN}✓ 后端服务已启动 (PID: $BACKEND_PID)${NC}"
echo "  后端日志: logs/backend.log"

# 等待后端服务启动
sleep 3

# 启动前端开发服务器（后台运行）
echo -e "${YELLOW}[2/2] 启动前端服务...${NC}"
cd frontend
npm run dev > ../logs/frontend.log 2>&1 &
FRONTEND_PID=$!
cd ..
echo -e "${GREEN}✓ 前端服务已启动 (PID: $FRONTEND_PID)${NC}"
echo "  前端日志: logs/frontend.log"

# 保存 PID 到文件
echo $BACKEND_PID > .backend.pid
echo $FRONTEND_PID > .frontend.pid

echo ""
echo -e "${GREEN}========================================"
echo "  启动完成！"
echo -e "========================================${NC}"
echo ""
echo -e "后端服务: ${GREEN}http://localhost:3000${NC}"
echo -e "前端服务: ${GREEN}http://localhost:5173${NC}"
echo ""
echo "查看日志："
echo "  后端: tail -f logs/backend.log"
echo "  前端: tail -f logs/frontend.log"
echo ""
echo "停止服务："
echo "  运行: ./stop.sh"
echo "  或手动: kill $BACKEND_PID $FRONTEND_PID"
echo ""
echo -e "${YELLOW}按 Ctrl+C 不会停止服务，请使用 ./stop.sh 停止${NC}"
